package com.glq1218.common.service;

import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.IService;
import com.glq1218.common.dto.QueryUserListDTO;
import com.glq1218.common.dto.UserDTO;
import com.glq1218.common.entity.User;
import com.glq1218.common.model.PageRes;

/**
 * 用户表 服务类
 *
 * @author glq1218
 * @since 2023-02-18
 */
public interface UserService extends IService<User> {

    /**
     * 通过用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    User findByUsername(String username);

    /**
     * 是否存在某一项信息是相同的用户
     *
     * @param userInfo 用户的某一项信息
     * @param info     提供的信息
     * @param <T>      信息的类型
     * @return 是否存在
     */
    <T> boolean isExist(SFunction<User, T> userInfo, String info);

    /**
     * 查询用户列表
     *
     * @param queryUserListDTO 查询条件
     * @return 用户列表
     */
    PageRes<UserDTO> queryUserList(QueryUserListDTO queryUserListDTO);

    /**
     * 添加用户
     *
     * @param userDTO 用户信息DTO
     * @return 添加是否成功的信息
     */
    String addUser(UserDTO userDTO);
}
